home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / rexx / imc / rexx-imc.5 / README.versions < prev    next >
Encoding:
Text File  |  1993-06-25  |  7.2 KB  |  148 lines

  1. alpha1.2 6 Aug 1992  - initial release
  2.  
  3. alpha1.3 17 Sep 1992 - fixes the following problems:
  4.  
  5.    * Installation instructions too brief and not clear enough
  6.    * Error incorrectly reported on the following code format:
  7.        select
  8.            when a
  9.           then ...
  10.        when b
  11.           then ...
  12.        end
  13.    * Clause tracing did not strip leading tabs.   
  14.    * Special variable SIGL not set on calling an internal routine
  15.    * Second parameter of bitxxx() was required; should be optional
  16.    * pos, lastpos, wordpos gave error when the needle was empty
  17.    * sign('-0') = -1 (should be 0)
  18.    * sign() left extra value on calculator stack, causing surprises
  19.    * subword(" to be or not to be ",7) caused crash; similarly for
  20.      word and wordlength
  21.    * symbol() gave incorrect results;
  22.    * translate(x,"") mistook the empty string for an omitted argument
  23.    * wordindex(string,n) gave non-zero when string contained n-1 words
  24.    * x2d() did not recognise second parameter
  25.    * arg() gave "4", not "2" when arguments were: func(1,2,,)
  26.    * binary strings were too restricted (i.e. a multiple of 8 digits and
  27.      no spaces)
  28.    * "DO for=forever" interpreted FOREVER as reserved
  29.    * PROCEDURE EXPOSE used commas as separators instead of spaces
  30.    * date('U') gave wrong day number
  31.    * Leading and trailing spaces were allowed in hex constants
  32.    * Priorities of implicit concatenation, space operator and unary operators
  33.      were wrong
  34.    * random(n,n) returned error; should return n
  35.    * Memory fault occurred after 63 nested PROCEDURE instructions
  36.    * expression after PUSH and QUEUE was required
  37.    * "rxstack" sometimes exited before giving the stack a chance to catch up;
  38.      after that queued() would slowly rise up to its correct value.
  39.    
  40. beta1.4 13 May 1993 - fixes the following problems:
  41.  
  42.    * Mathematical function name discrepancy between rxmathfn.c and rxfn.c
  43.      now fixed
  44.    * Intermittent "Routine not found" error when using external functions
  45.      now fixed
  46.    * Case of labels is now preserved in "trace l"
  47.    * "parse var a.b" gave "?.B" when a.b undefined, now gives "A.B"
  48.    * "parse var" now signals to NOVALUE when variable is undefined
  49.    * stem. is now different from stem.""
  50.    * "stem.=5; drop stem.5; say stem. stem.5" now says "5 STEM.5" (did say
  51.      "5 5")
  52.    * Control variable in a loop is interpreted on each pass, and END, LEAVE 
  53.      and ITERATE compare symbol names literally.
  54.    * INTERPRET changed to detect incomplete DO/SELECT blocks
  55.    * SELECT (and WHEN) changed to reject multiple statements in WHEN clauses
  56.    * "do name=expri ..." changed to assign "expr + 0" to "name" instead of
  57.      just "expr".
  58.    * UNTIL conditions are tested before incrementing the control variable
  59.    * WHILE/UNTIL checking "modernised" ;-)
  60.    * "procedure expose (varlist)" implemented
  61.    * Fixed uninitialised char* pointer in rxchars2() which made lines()
  62.      sometimes bomb out with segmentation fault
  63.    * Fixed "Unexpected THEN/ELSE" error report for instructions of form
  64.      "otherwise if (cond) then ..."
  65.    * Amended rxmathfn.exec to use single instructions in WHEN clauses
  66.    * Fixed multiplication to say "Arithmetic Overflow" instead of "Invalid
  67.      whole number" when overflow occurs
  68.    * Fixed stacknum() to report error on too-large exponents - it previously
  69.      stacked an erroneous value instead.
  70.    * Fixed sqrt() to work with argument zero
  71.    * Fixed EXIT instruction to record size of new calculator stack
  72.      (previous code occasionally caused hard-to-trace memory crashes)
  73.    * chars(file) calls stat to return the size of file when it is not open
  74.    * chars() now takes into account characters buffered by stdio
  75.    * NUMERIC settings saved across function calls
  76.    * "parse numeric" now works
  77.    * Changed the sqrt() function in rxmathfn.exec
  78.    * Fixed formatting to obey 2*DIGITS rule for small numbers
  79.    * Fixed format() to obey 2*expt rule, also to round the number on input
  80.    
  81. REXX/imc-beta-1.5 4.00 25 Jun 1993 has the following changes:
  82.  
  83.    * Fixed two erroneous source lines which choke sensitive compilers
  84.    * Distinguished between AIX cc and AIX gcc in the Makefile
  85.    * made "do 3=i" an error instead of a counted loop
  86.    * made "a==4" an error instead of a command
  87.    * Message 15 last word changed from "constant" to "string"
  88.    * '414243'x(3) is now a function call (was abuttal)
  89.    * allowed tab characters in hex and binary strings
  90.    * implemented "drop (list)"
  91.    * Added STUFF_STACK preprocesor symbol
  92.    * Fixed traceback and related things so that, for instance, running
  93.      main.exec, where main, foo and bar are as follows:
  94.  
  95.      main.exec                   foo.exec                          bar.exec
  96.    
  97.      /* call an OK program */    /* call an erroneous program */   /* error */
  98.      call foo                    say "Entered FOO"                 return a+b
  99.                                  say bar()
  100.                                  say "Leaving FOO"
  101.                                  return
  102.                    
  103.      produces the following output:
  104.  
  105.      Entered FOO
  106.          2 +++  return a+b
  107.      Error 41 running /tmp/bar.exec, line 2: Bad arithmetic conversion
  108.          3 +++  say bar()
  109.      Error 50 running /tmp/foo.exec, line 3: Error in called routine
  110.          2 +++ call foo
  111.      Error 50 running /tmp/main.exec, line 2: Error in called routine
  112.  
  113.      whereas only the first four lines would previously have been displayed.
  114.      Similarly, traceback is printed for an error in an external routine
  115.      even when the error is trapped in the calling program.
  116.  
  117.    * Removed the RC messages from error reports such as the above, because
  118.      they were pointless.
  119.    * Changed the format of RC messages from "RC(n)" to "RC=n"
  120.    * Implemented the third parameter of justify()
  121.    * Corrected "parse version" to show a language level as second token
  122.      instead of the interpreter version.
  123.    * Corrected mtest() to keep the old value if realloc fails
  124.    * Rewrote the tokeniser and amended various parts of the interpreter to
  125.      use the new program format
  126.    * Implemented the "name" subkeyword of "signal on"
  127.    * implemented the "failure" and "notready" conditions
  128.    * Added command line option processing
  129.    * Added extra signal handlers to make the interpreter die more cleanly
  130.    * Implemented "call on"
  131.    * Implemented the "condition" builtin function
  132.    * Made "Unexpected '*/'" a separate (nonstandard) error message
  133.    * Trace instructions now ignored in program if interactive tracing is on
  134.    * Implemented "tracefile=" option
  135.    * Improved chars() and lines() for non-open files to get more information
  136.      and raise notready if appropriate.  Improved lines() for persistent
  137.      files to return the correct result (and not just 0 or 1).
  138.    * Deleted ioerr().  RC is no longer set when notready is raised.
  139.    * Fixed the return values of charout() [would sometimes return a null
  140.      string or an incorrect value of 1 if an error occurred].
  141.    * File I/O functions now give error when the file is an empty string.
  142.    * Implemented the stream() function with commands close, fdopen, fileno,
  143.      flush, ftell, open, pclose and popen.
  144.    * Changed rexxtest.exec to use the stream() function instead of all those
  145.      other ones.
  146.    * Changed REXXPATH to REXXIMC and implemented the search so that this
  147.      environment variable is no longer necessary.
  148.